Various self-clocking encoding schemes have been devised in which a signal containing both data and timing information is represented by a single binary bit stream. Ideally, such a stream is represented as at least two possible levels or states characterized by transitions between the states. If a magnetic medium is used for storage of the bit stream, the data and timing information is represented, for example, either by a series of transitions between distinct magnetization states or graphically by a bar code of permanent magnetic material.
The bar code is frequently used in credit cards. One accepted encoding scheme of this type is called the "Aiken" code. The Aiken code is characterized electrically by transitions between two possible signal levels which transitions occur regularly at the beginning and end of each bit interval bar or cell length. The code is also characterized by the presence or absence of an "irregular" transition occurring intermediate the regular transitions indicating first and second output data states representing, say, a binary one and a binary zero, respectively. The data contained in such a code thus is represented by the irregular transitions and the timing information is represented by the regular transitions.
The Aiken code typically is converted into another format for processing. One such format is a binary waveform with clocking. To accomplish this conversion, a decoder is required to generate a data bit stream which is characterized by a first level representing a binary one and a second level representing a binary zero. But a second or timing bit stream is employed to interpret the data bit stream. Thus, the regular and irregular transitions are separated one from the other.
Prior art decoders operative to perform the above-described conversion are relatively simple to implement if the Aiken code is read at a uniform rate. For example, an accurate clock or timer can be used to determine the proper time within a bit cell to check for the presence or absence of an irregular transition. If, on the other hand, the Aiken code is read or scanned at a nonuniform rate, as would be the case where a hand operated reader is used, a clock is of little use, and another approach is generally required.
One known approach for reading (optical) codes at a nonuniform rate may, for example, utilize the spatial width of the preceding bit as a basis for establishing an appropriate viewing window for the present bit. By so doing, the decoder can still function properly despite moderate changes in reading speed between adjacent bits. But, this type of procedure requires relatively complicated and costly logic circuitry, and does not operate properly under certain reading conditions involving acceleration and deceleration. Moreover, with codes of constant cell size such as the Aiken code such a procedure cannot be used.